package br.com.virtual.cadastrar.service.impl;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Local;
import javax.ejb.Stateless;
import javax.inject.Inject;

import br.com.virtual.base.exceptions.VirtualValidationException;
import br.com.virtual.cadastrar.dao.ProdutoDAO;
import br.com.virtual.cadastrar.model.Categoria;
import br.com.virtual.cadastrar.model.Foto;
import br.com.virtual.cadastrar.model.Grupo;
import br.com.virtual.cadastrar.model.Produto;
import br.com.virtual.cadastrar.service.FotoService;
import br.com.virtual.cadastrar.service.ProdutoService;

@Stateless
@Local(ProdutoService.class)
public class ProdutoServiceImpl implements ProdutoService {

	@Inject
	private ProdutoDAO produtoDAO;

	@EJB
	private FotoService fotoService;
	
	@Override
	public Produto create(Produto produto) throws VirtualValidationException {
		return produtoDAO.create(produto);
	}

	@Override
	public Produto read(Long id) {
		return produtoDAO.read(id);
	}

	@Override
	public void update(Produto produto) throws VirtualValidationException {
		produtoDAO.update(produto);
	}

	@Override
	public void delete(Produto produto) throws VirtualValidationException {
		
		for(Foto foto : fotoService.getList(produto))
			fotoService.delete(foto);
		
		produtoDAO.delete(produto);
	}

	@Override
	public List<Produto> getList() {
		return produtoDAO.getList();
	}

	@Override
	public List<Produto> getListAtivo() {
		return produtoDAO.getListAtivo();
	}

	@Override
	public List<Produto> getListDestaque() {
		return this.produtoDAO.getListDestaque();
	}

	@Override
	public List<Produto> findByNome(String nome) {
		return this.produtoDAO.findByNome(nome);
	}

	@Override
	public List<Produto> getProdutosByCategoria(Categoria categoria) {
		return this.produtoDAO.getProdutosByCategoria(categoria);
	}

	@Override
	public List<Produto> getProdutosByGrupo(Grupo grupo) {
		return this.produtoDAO.getProdutosByGrupo(grupo);
	}

	@Override
	public List<Produto> getListBanner() {
		return this.produtoDAO.getListBanner();
	}

	@Override
	public List<Produto> getListProdutoData(String nomeBuscar) {

		return this.produtoDAO.getListProdutoData(nomeBuscar);
	}

	@Override
	public void baixarEstoque(Produto produto, int quantidade) {
		this.produtoDAO.baixarEstoque(produto, quantidade);
		
	}
}
